1. Field of the Invention
The present invention relates to cluster server apparatuses, and more specifically, to a cluster server apparatus for distributing streaming data such as video data in response to requests from a plurality of terminals connected to the cluster server apparatus through a network.
2. Description of the Background Art
For cluster server apparatuses that distribute streaming data typified by video data, continuous distribution of the streaming data to terminals connected to the cluster server apparatuses through a network is required. Since the volume of the streaming data is generally enormous, a storage device such as a large-capacity hard disk is used for data storage in the cluster server apparatus.
However, in the cluster server apparatus structured by a server comprising a large-capacity storage device for data storage, the number of terminals for receiving data is restricted by the capability limitations of the server. Therefore, in one conventional method for distribution of streaming data to a plurality of terminals, a plurality of servers are provided in the cluster server apparatus, and requests from the terminals are distributed in rotation among the plurality of servers.
An example of the structure of a conventional cluster server apparatus using the above-described method of distributing requests in rotation among the plurality of servers is briefly described below.
FIG. 18 is a block diagram showing an example of the structure of a distribution system using the above-described conventional cluster server apparatus.
As shown in FIG. 18, m terminals 401 to 40m (where m is an integer not less than 2) and a cluster server apparatus 200 are connected together via a network 501 in the conventional distribution system. The cluster server apparatus 200 is structured by n cache servers 201 to 20n (where n is an integer not less than 2) and a content server 300. The cache servers 201 to 20n are each connected to the content server 300 via an internal network 503.
The cache servers 201 to 20n include receivers 211 to 21n, caches 221 to 22n, and distribution units 231 to 23n, respectively. The content server 300 includes a streaming data storage unit 301, a read unit 302, a cache 303, and a distribution unit 304. Stream data is stored in the streaming data storage unit 301 as packets, where packets are a unit of the streaming data.
Now assume that the terminal 401 requests the content server 300 for certain streaming data. In response to the request, the read unit 302 issues a read request for the streaming data to the streaming data storage unit 301 in the content server 300. The streaming data, in response to the read request, is then read in the read unit 302. The read streaming data is cached in the cache 303. The distribution unit 304 sends the streaming data which is cached in the cache 303 to the cash server 201. In the cash server 201, the receiver 211 receives the streaming data sent from the content server 300. The received streaming data is cached in the cache 221 of the cache server 201. The distribution unit 231 sends the streaming data cached in the cache 221 to the terminal 401.
Next, when the terminal 402 requests the content server 300 for certain streaming data, the cluster server apparatus 200 uses the cache server 202, and when the terminal 403 requests the content server 300 for certain streaming data, the cluster server apparatus 20 uses the cache server 203. In this way, the cluster server apparatus 200 uses the cache servers in rotation as the cluster server apparatus 200 receives multiple requests from the terminals.
As stated above, in the conventional cluster server apparatus 200, the cache servers 201 to 20n are structured in parallel for cyclical use in handling requests. With this structure, the number of terminals 401 to 40m for receiving streaming data is increased in the entire system.
In addition to the above, another conventional cluster server apparatus which caries out a data recovery after recovery from a failure which occurred in one server in the cluster server apparatus has been disclosed in Japanese Patent Laid-Open Publication No. 8-263351 (1996-263351). In the conventional cluster server apparatus disclosed in this publication, each cache server caches on updating history of the content server. After failure recovery, the latest updating history cached in the cache server is used for data recovery in the content server. Therefore, even if a failure occurs in the data of the content server, data recovery can be quickly carried out in this conventional cluster server apparatus without requiring system suspension.
However, in the conventional cluster server apparatus 200, requests from the terminals 401 to 40m are provided to the cache servers 201 to 20n simply in rotation. Therefore, if streaming data that is continuous in time such as video data is to be distributed, loads on the cache servers 201 to 20n are not properly distributed, and thereby continuous video images may be interrupted.
Further, if a failure occurs in the cache server during streaming data distribution, another server has to distribute the streaming data from the start of the streaming data instead of the portion of the streaming data which remains to be transmitted when the failure occurred.
Still further, in the conventional cluster server apparatus disclosed in the above publication, the updating history of the content server is held only by the cache servers. Therefore, if any failure occurs in the cache servers, the service to the terminals is thereby interrupted.
Therefore, an object of the present invention is to provide a cluster server apparatus for optimally distributing, in response to requests from terminals, loads on cache servers while continuing, even if a failure occurs in any one of the cache servers, data distribution to the terminals without any problem (frame skip) and for recovering from the failure.
The present invention has the following features to achieve the object above.
The present invention is directed to a cluster server apparatus for distributing streaming data such as moving-picture data continuously in time in response to requests from a plurality of terminals connected to the cluster server apparatus through a network.
First, in order to achieve load-distribution among cache servers, the present invention comprises a plurality of cache servers which are each operable to distribute the streaming data corresponding to the requests from the terminals, and a load-distribution server which is operable to receive the request from one of the terminals and to transfer the request to one of the plurality of cache servers based on whether streaming data that corresponds to the request is stored in the cache servers or not and the state of the distribution of streaming data by the cache servers, and a content server with a streaming data storage unit which is operable to store the streaming data, where the content server is operable to send, to the cache server, the streaming data that corresponds to the request from the cache server. Each of the cache servers comprises a streaming data storage unit which is operable to store the streaming data from the content server, and a request transfer unit which is operable to receive the request transferred from the load-distribution server. If the streaming data which corresponds to the request is stored in the streaming data storage unit, the request transfer unit is operable to output an instruction for distributing the stored streaming data. If, however, the streaming data which corresponds to the request is not stored the streaming data storage unit, the request transfer unit is operable to transfer the request to the content server, to store the streaming data from the content server in the steaming data storage unit, and to output an instruction for distributing the stored streaming data. Each of the cache servers also comprise a data distribution unit which is operable to distribute the streaming data stored in the streaming data storage unit to the requesting terminal based on the instruction outputted from the request transfer unit, and a cache control unit which is operable to control the streaming data from the content server to be redundantly stored in the streaming data storage unit of at least one other predetermined cache servers.
Preferably, each of the cache servers further comprises a session management unit which is operable to manage the state of streaming data distribution by its own cache server, and a streaming data management unit which is operable to manage the streaming data stored in the streaming data storage unit.
The load-distribution server of the present invention comprises a cluster control unit which is operable to, when receiving the request from the terminal, make an inquiry to all of the session management units and all of the streaming data management units of the plurality of cache servers. The inquiry requests information concerning the distribution state in the cache servers and whether the streaming data that corresponds to the request is stored or not. Based on a response to the inquiry from any one of the cache servers, the load-distribution is operable to transfer the request to any one of the responding cache servers. If any of the cache servers store the corresponding streaming data, the cluster control unit of the load-distribution server transfers the request to a least-loaded cache server among the cache servers that store the corresponding streaming data. If however, none of the cache servers store the corresponding streaming data, the cluster control unit transfers the request to a least-loaded cache server among all of the cache servers.
Alternatively, it is preferred that each of the cache servers further comprises a session management unit which is operable to manage a state of streaming data distribution by its own cache server, and a streaming data management unit operable to manage the streaming data stored in the streaming data storage unit. It is also preferred that the load-distribution server comprises a load state management unit which is operable to always communicate with the session management units of all of the cache servers and to hold states of the load on each of the cache servers, and a cluster control unit which is operable to, when receiving the request from the terminal, make an inquiry to all of the streaming data management units as to whether the streaming data that corresponds to the request is stored or not. Based on a response to this inquiry, the load-distribution server is operable to transfer the request to any one of the cache servers. Based on information in the load state management unit, if any of the cache servers store the corresponding streaming data, the cluster control unit of the load-distribution system transfers the, request to a least-loaded cache server among the cache servers that store the corresponding streaming data. If, however, none of the cache servers store the corresponding streaming data, the cluster control unit transfers the request to a least-loaded cache server among all of the cache servers.
Alternatively, it is preferred that each of the cache servers comprises a session management unit which is operable to manage a state of stream distribution by its own cache server, and a streaming data management unit which is operable to manage the streaming data stored in the streaming data storage unit. It is also preferred that the load-distribution server comprises a cluster control unit which is operable to always communicate with the session management units and all of the streaming data management units and, based on the communication, to transfer the request to any one of the cache servers. Upon receiving the request from the terminal, if any of the cache servers store the corresponding streaming data, the cluster control unit transfers the request to a least-loaded cache server among the cache servers that store the corresponding streaming data. If, however, none of the cache servers store the corresponding streaming data, the control unit transfers the request to a least-loaded cache server among all of the cache servers.
Here, if the cluster server apparatus comprises first to n-th cache servers (where n is an integer not less than 2), when the streaming data is stored in the streaming data storage unit, the cache control unit of an i-th cache server controls the streaming data to be stored in the streaming data storage units of an (i+1)-th cache server (where I is any number from 1 to n, and if i=n, a first cache server).
It is also preferred that when the streaming data which corresponds to the request is not stored in the streaming data storage unit, the cache control unit changes a sender address of the request to be transferred to the content server into a predetermined multicast address for transmission. Further, when receiving the streaming data destined for the predetermined multicast address, the cache control unit controls the streaming data to be stored in the streaming data storage unit.
Further, it is preferred that, in the i-th cache server, when the streaming data which corresponds to the request is not stored in the streaming data storage unit, the cache control unit of the i-th cache server transmits, to the content server, the request for streaming data distribution to addresses of the i-th cache server and the (i+1)-th cache server.
It is also preferred that the cluster control unit transfers the requests to the cache servers so that the number of distributable streams for each of the cache servers is equal to or less than a value {((nxe2x88x921)/n)xc3x97MAX)} (where MAX is the maximum number of distribution streams that each of the cache servers can distribute), and it is preferred that the total number of distribution streams of the streaming data stored in the streaming data storage units (15i, 15i+1) of the i-th cache server and the (i+1)-th cache server is equal to or less than MAX.
It is also preferred that the cluster control unit transfers the requests to the cache servers so that the total number of distribution streams of the streaming data stored in the streaming data storage units of the i-th cache server and the (i+1)-th cache server is equal to or less than MAX, and it is preferred that the total number of distribution streams of the streaming data stored in the streaming data storage units of the (ixe2x88x921)-th cache server (if i=1, the n-th cache server) and the i-th cache server is equal to or less than MAX.
As described above, according to the present invention, one streaming data is stored in the plurality of cache servers. Therefore, the streaming data can be directly distributed from the plurality of cache servers, and the distribution capabilities of the cache servers can thereby be greatly improved. Moreover, equal load-distribution of the cache servers can be achieved according to the volume of streaming data stored in each of the cache servers. Thus, the storage units (caches) can be efficiently used, and data can be distributed to more terminals.
Further, the present invention preferably has the following features to achieve continuous data distribution by using other cache servers when one of the cache servers becomes unable to carry out distribution.
The data distribution unit of each of the cache servers notifies the other cache server which redundantly stores the streaming data of distribution information about the streaming data being distributed to the terminal at regular intervals. Each of the cache servers further comprises a distribution-disabled detection unit which is operable to detect, through the distribution information received from the other cache server, that at least one of the other cache servers becomes unable to carry out distribution i.e., at least one of the other cache servers has failed. The distribution-disabled detection of at least one of the non-failing cache servers then provides an instruction to the data distribution unit to distribute, within a predetermined period for avoiding interruption of the streaming data, the streaming data that succeeds the streaming data most recently distributed by the other cache server which has failed and has thus become unable to carry out distribution, instead of the other cache server which has failed.
It is also preferred that the data distribution unit of the i-th cache server notifies the (i+1)-th cache server and the (ixe2x88x921)-th cache server which redundantly store the streaming data of distribution information corresponding to the streaming data being distributed to the terminal at regular intervals. It is also preferred that the i-th cache server further comprises a distribution-disabled detection unit which is operable to detect, through the distribution information received from the (i+1)-th cache server and the (ixe2x88x921)-th cache server, whether either or both of the (i+1)-th cache server or the (ixe2x88x921)-th cache server have become unable to carry out distribution, and to provide an instruction to the data distribution unit to distribute, within a predetermined period for avoiding interruption of the streaming data, the streaming data that succeeds the streaming data most recently distributed by the either or both of the cache servers that have become unable to carry out distribution instead of the failed cache servers.
Further, it is preferred that when the data distribution unit distributes the streaming data to the terminal instead of the cache server that becomes unable to carry out distribution by following the instruction provided by the distribution-disabled detection unit, the cache control unit controls new streaming data from being stored in the streaming data storage unit of the cache server which distributes the streaming data instead of the failed cache server.
As described above, according to the present invention, one streaming data is stored in the plurality of cache servers. Also, the cache servers operate while notifying each other of their states of distribution. Thus, in addition to the effects already mentioned above, the present invention has an effect that continuous data distribution to the terminals can be made even when a failure occurs.
Still further, the present invention has the following features to achieve data recovery to the cache server which has recovered from a failure.
When the cache server that becomes unable to carry out distribution is recovered, the recovered cache server outputs a recovery notification to the data distribution unit of the other cache server that redundantly stores the streaming data. When the other cache server which has distributed the streaming data to the terminal instead of the recovery cache server receives the recovery notification, the other cache server copies the streaming data stored in its streaming data storage unit to the streaming data storage unit of the recovered cache server.
As described above, according to the present invention, one streaming data is stored in the plurality of cache servers. Also, the cache servers operate while notifying each other of their states of distribution. Thus, quick data recovery can be made to the cache server that has been recovered after it has failed.
Still further, the present invention preferably has the following features to achieve continuous data distribution using other cache servers when one of the cache servers becomes unable to carry out distribution.
Each of the cache servers further comprises a session management unit which is operable to manage a session, which indicates the execution of distributing the streaming data to the terminal through the network connection, a packet (a unit of streaming data) most recently transmitted by the data distribution unit in each session, and the number of distribution streams of the streaming data. Each of the cache servers further comprises a distribution-disabled detection unit operable to regularly transmit to and receive from the other cache servers that redundantly store the streaming data a notification corresponding to the packets for all sessions managed by the session management unit. When one of the cache servers ceases to send the notification for a predetermined time period, the distribution-disabled detection unit determines that the cache server that ceases to send the notification becomes unable to carry out distribution. Then, the distribution-disabled detection unit provides an instruction to the data distribution unit that the cache server, which redundantly stores the streaming data, to distribute, within a predetermined period for avoiding interruption of the streaming data, a packet that succeeds the packet identified by the notification most recently received for sessions of the redundantly-stored streaming data among sessions managed by the other cache server that becomes unable to carry out distribution instead of the cache server which has become unable to carry out distribution.
Alternatively, it is preferred that each of the cache servers further comprises a session management unit which is operable to manage a session identifier for identifying a session, which indicates the execution of distributing the streaming data to the terminal through the network connection, a packet identifier for identifying a packet (a unit of streaming data) most recently transmitted by the data distribution unit for each session, a session management table for storing the session identifier and the packet identifier, a table boundary value for dividing the session management table into two based on the session identifier, and the number of distribution streams of the streaming data. It is also preferred that each of the cache servers further comprises a distribution-disabled detection unit which is operable to regularly transmit to and receive from the other cache servers that redundantly store the streaming data a notification corresponding to the session identifiers and the packet identifiers for all sessions in which the streaming data managed by the session management unit are being distributed, and to update, according to the notification received by the other cache servers, the session identifier and the packet identifier stored in the session management table. The session management unit is operable to set the session identifier of the session for the streaming data being distributed by the data distribution unit of its own cache server to a value equal to or smaller than the table boundary value, and to set the session identifier of the session for the streaming data being distributed by the data distribution unit of the other cache server to a value larger than the table boundary value. The data distribution unit is operable to repeatedly distribute the packet to the terminal and to update the packet identifier when the session identifier is equal to or smaller than the table boundary value in all of the sessions. When one of the cache servers ceases to send the notification for a predetermined time period, the distribution-disabled detection unit determines that the cache server that ceases to send the notification becomes unable to carry out distribution. Upon such a determination, the distribution-disabled detection unit sets the table boundary value to a value larger than a maximum value of the session identifier within a predetermined period so as to avoid interruption of the streaming data.
Alternatively, it is preferred that each of the cache servers further comprises a session management unit which is operable to manage the number of distribution streams of the streaming data distributed from its own cache server, and a distribution-disabled detection unit which is operable to detect the other cache server that becomes unable to carry out distribution and to instruct the data distribution unit to start distributing all streaming data that has been distributed by the other cache server instead. The distribution-disabled detection unit is operable to provide an overflow notification to still another cache server that redundantly stores the streaming data, and to instruct the data distribution unit to stop distributing streaming data that exceeds the maximum number of permissible distribution streams. The distribution-disabled detection unit in the still other cache server that has received the overflow notification is operable to instruct the data distribution unit of its own cache server to transmit streaming data that succeeds the streaming data most recently distributed by the cache server that has provided the overflow notification for all streaming data that exceeds the maximum number of permissible distribution streams that the cache server that has provided the overflow notification stops distributing.
It is also preferred that if the other cache server becomes unable to carry out distribution and the response from the session management unit shows that the number of distribution streams exceeds the maximum number of distribution streams that the cache server can distribute, the distribution-disabled detection unit provides the overflow notification to still another cache server that redundantly stores the streaming data, and instructs the data distribution unit to stop distributing streaming data exceeding the maximum number of distribution streams. Further, the distribution-disabled detection unit in the still other cache server that has received the overflow notification instructs the data distribution unit of its own cache server to distribute a packet that succeeds the packet identified by a notification most recently received for streaming data exceeding the maximum number of distribution streams of which the cache server that has provided the overflow notification stops distributing.
It is also preferred that the cache servers that redundantly store the streaming data each have the session management table in which a maximum number of registrable sessions is MAX. Each of the session management units sets the session identifier to a value smaller than the table boundary value for the session of the streaming data being distributed by the data distribution unit of its own cache server, while setting the session identifier to a value not smaller than the table boundary value (setting the session identifiers I1 to In that are smaller than the table boundary value to values (MAXxe2x88x92I1xe2x88x921) to (MAXxe2x88x92Inxe2x88x921) in the session management table in the other cache server) for the session of the streaming data being distributed by the data distribution unit of the other cache server. The distribution-disabled unit updates, according to the notification, the values in the session management table to the values of the session identifiers (MAXxe2x88x92I1xe2x88x921) to (MAXxe2x88x92Inxe2x88x921) and the values of the packet identifiers P1 to Pn, and when the table boundary value is changed to F, the distribution-disabled unit sets the table boundary value to (MAXxe2x88x92F).
Further, it is preferred that when a streaming data set S1 stored in both a cache server A and a cache server B and a streaming data set S2 in both the cache server A and a cache server C are stored in the streaming data storage unit of the cache server A. It is also preferred that the cache server A has session management tables T0 and T1 and table boundary values F0 and F1 at which the session management tables T0 and T1 are divided into two based on the session identifier. In the session management table T0, the session identifier is set to a value smaller than the table boundary value F0 for the session of the streaming data included in the streaming data set S1 being distributed by the cache server A, while the session identifier is set to a value larger than the table boundary value F1 (the session identifier having one of the values I1 to In that are smaller than the table boundary value F1 are set to one of values (MAXxe2x88x92I1xe2x88x921) to (MAXxe2x88x92Inxe2x88x921) in the session management table of the cache server B) for the session of the streaming data included in the streaming data set S1 being distributed by the cache server B. In the session management table T1, the session identifier is set to a value smaller than the table boundary value F1 for the session of the streaming data included in the streaming data set S2 being distributed by the cache server A, while the session identifier is set to a value larger than the table boundary value F0 (the session identifier having one of the values J1 to Jn that are smaller than the table boundary value F1 are set to one of values (MAXxe2x88x92J1 1) to (MAXxe2x88x92Jnxe2x88x921) in the session management table of the cache server C) for the session of the streaming data included in the streaming data set S2 being distributed by the cache server C.
Further, in the cache server A, the distribution-disabled detection unit is operable to transmit a notification indicating the session identifier and the packet identifier for all sessions of the streaming data being distributed to the cache servers B and C by making an inquiry to the session management unit, and to receive the notification from the cache servers B and C. The distribution-disabled detection unit in the cache server A is also operable to set the table boundary value F0 to a value equal to or larger than MAX when no notification comes from the cache server B, and to set the table boundary value F1 to a value equal to or larger than MAX when no notification comes from the cache server C. When the number of distribution streams exceeds the maximum number of distribution streams, the distribution-disabled detection unit in the cache server A sets the table boundary value F1 to a value smaller than the maximum number of distribution streams if no notification comes from the cache server B, and sets the table boundary value F0 to a value smaller than the maximum number of distribution streams if the notification comes from the cache server C.
As described above, according to the present invention, one streaming data is stored in the plurality of cache servers. Also, the states of distribution of the cache servers adjacent to each other are stored as information in relation to sessions and packets. The cache servers operate while notifying each other of their states of distribution. Thus, in addition to the effects already mentioned above, the present invention has an effect in which continuous data distribution to the terminals can be made even when one of the cache servers becomes unable to carry out distribution.
Still further, the present invention preferably has the following features to achieve data recovery to the cache server that has been recovered after it has failed.
Each of the cache server further comprises a recovery detection unit which is operable to detect that the other cache server that has been unable to carry out distribution has recovered. When the other cache server has recovered, the recovery detection unit of the other recovered cache server is operable to provide a recovery notification to the cache server that takes over distribution of the streaming data to the terminal, and to instruct the data distribution unit to distribute the streaming data that succeeds the streaming data that has been distributed by the cache server. Further, the recovery detection unit of the cache server instructs the data distribution unit to stop the distribution of the streaming data that has been distributed thereby instead of by the recovered cache server.
It is also preferred that each of the cache servers further comprises a distribution recovery unit operable to detect that the other cache server that has been unable to carry out distribution has recovered. When the other cache server has recovered, the cache control unit of the other recovered cache server is operable to provide a recovery notification to the data distribution unit of the cache server that redundantly stores the streaming data, and to copy the streaming data stored in the streaming data storage unit of the cache server that has distributed the streaming data to the terminal instead of the other recovered server to the streaming data storage unit of the other recovered cache server. After the cache control unit completes the copy of the streaming data to the other recovered server, the recovery detection unit of the other recovered cache server is operable to provide a recovery notification to the cache server, and to instruct the data distribution unit to start distributing a packet that succeeds the packet identified by the packet identifier most recently transmitted in the streaming data that has been distributed instead by the cache server. Further, the recovery detection unit of the cache server is operable to instruct the data distribution unit to stop distribution of the streaming data that has been distributed thereby instead of by the recovered cache server.
Alternatively, it is preferred that the cache server further comprises a distribution recovery unit which is operable to detect that the other cache server that has been unable to carry out distribution has recovered. When the other cache server has recovered, the cache control unit of the other recovered cache server is operable to provide a recovery notification to the data distribution unit of the cache server that redundantly stores the streaming data, and to copy the streaming data stored in the streaming data storage unit of the cache server that has distributed the streaming data to the terminal instead of the other recovered cache server to the streaming data storage unit of the other recovered cache server. After the cache control unit completes the copy of the streaming data to the other recovered cache server, the recovery detection unit of the other recovered cache server is operable to provide a recovery notification to the cache server, and to set the table boundary value back to a value that existed before the cache server became unable to carry out distribution. Further, the recovery detection unit of the cache server is operable to set the table boundary value back to the value that existed before the cache server became unable to carry out distribution.
When the cache server carries out distribution of streaming data that exceeds the maximum number of distribution streams because the cache server performed the stream distribution instead of the other cache server that became unable to carry out distribution, it is also preferred that the recovery detection unit of the cache server instructs the data distribution unit to stop distribution of the streaming data that has been distributed thereby instead of by the other recovered cache server, provides a recovery notification to still another cache server, and then instructs the data distribution unit to start distributing streaming data that succeeds the streaming data that has been distributed by the still other cache server. In addition, the recovery detection unit of the still other cache server then instructs the data distribution unit of its own cache server to stop distributing the streaming data that has been distributed thereby instead of by the cache server that provided the recovery notification.
Alternatively, it is preferred that when the cache server carries out distribution of streaming data that exceeds the maximum number of distribution streams because of stream distribution instead of the other cache server that becomes unable to carry out distribution, the recovery detection unit of the cache server instructs the data distribution unit to stop distribution of the streaming data that has been distributed thereby instead of by the other recovered cache server, provides a recovery notification to still another cache server, and then instructs the data distribution unit to start distributing the packet that succeeds the packet identified by the packet identifier most recently transmitted in the streaming data that have been distributed by the still other cache server. In addition the recovery detection unit of the still other cache server instructs the data distribution unit of its own to stop distributing the streaming data that has been distributed thereby instead of the cache server that provided the recovery notification.
It is also preferred that each of the cache servers further comprises a distribution recovery unit operable to detect that the other cache server that has been unable to carry out distribution has recovered. When the other cache server has recovered, the cache control unit of the other recovered cache server is operable to provide a recovery notification to the data distribution unit of the cache server A that redundantly stores the streaming data, and to copy the streaming data stored in the streaming data storage unit of the cache server A that has distributed the streaming data to the terminal instead of the other received cache server to the streaming data storage unit of the other recovered cache server. After the cache control unit completes the copy of the streaming data by providing a recovery notification, the recovery detection unit of the other recovered cache server sets the table boundary value back to a value that existed before the cache server became unable to carry out distribution. Further, after the table boundary value of the cache server is set to the value that existed before the cache server failed, the recovery detection unit of the cache server A sets the table boundary values F0 and F1 back to values before the cache server became unable to carry out distribution.
As described above, according to the present invention, one streaming data is stored in the plurality of cache servers. Also, the states of distribution of the cache servers adjacent to each other are stored as information in relation to sessions and packets. The cache servers operate while notifying each other of their states of distribution. Thus, a quick data recovery can be achieved in the cache server that has recovered after it has failed. This recovery returns the previously failed cache server to the state before it became unable to carry out distribution, and thus, continuous data distribution to the terminals can be achieved even when the same cache server becomes unable to carry out distribution again.
These and other objects, features, aspects and advantages of the present invention will become more apparent from the following detailed description of the present invention when taken in conjunction with the accompanying drawings.